Purpose

Here we perform a second pass look at the data, similar to the first pass, but focusing specifically on multi-UTR genes.

Initialization

Libraries

library(magrittr)
library(tidyverse)
library(plotly)
library(ggbeeswarm)
library(Matrix)
library(matrixStats)
library(SingleCellExperiment)

Parameters

set.seed(20210818)
FILE_SCE_TX="data/sce/rd7_essential.annot.txs.Rds"

## KNOWN FACTORS
GENES_CPSF <- c("CPSF1", "CPSF2", "CPSF3", "CPSF4", "WDR33", "FIP1L1")
GENES_CF1 <- c("NUDT21", "CPSF6", "CPSF7")
GENES_CF2 <- c("PCF11", "CLP1")
GENES_CSTF <- c("CSTF1", "CSTF2", "CSTF2T", "CSTF3")
GENES_PAF <- c("PAF1", "CTR9", "RTF1")
GENES_NEF <- c("NXF1", "THOC1", "THOC2", "THOC3", "THOC5", "THOC6", "THOC7")
GENES_SPL <- str_c("SRSF", 1:11)
GENES_MTOR <- c("MTOR", "RPTOR", "MLST8", "CLK2", "AKT1")

COLOR_MAP <- c("non-targeting"="grey",
               "CPSF complex"="red4",
               "CFI complex"="purple2",
               "CFII complex"="orange2",
               "CSTF complex"="peachpuff",
               "PAF complex"="steelblue",
               "mRNA export factors"="orchid2",
               "splicing factors"="seagreen1",
               "MTOR complex"="cyan",
               "other"="black")

Data

Loading

sce <- readRDS(FILE_SCE_TX) %>% `[`(rowData(.)$utr_type_raw == 'multi',)

Preprocessing

Among our statistics, we will compute the percentage of UMIs corresponding to specific isoform classes, including IPA, proximal, and distal, in multi-UTR genes.

df_cells <- colData(sce) %>% as_tibble %>%
    mutate(umis_total=colSums(counts(sce)),
           pct_ipa=colSums(counts(sce[rowData(sce)$is_ipa,]))/umis_total,
           pct_proximal=colSums(counts(sce[rowData(sce)$is_proximal,]))/umis_total,
           pct_distal=colSums(counts(sce[rowData(sce)$is_distal,]))/umis_total)

Target Analysis

We will explore whether any perturbations have effects on basic transcriptome characteristics. These will also be compared against each other.

df_targets <- df_cells %>%
    group_by(target_gene, target_gene_id, sgID_AB) %>%
    summarize(n_cells=dplyr::n(),
              mean_umis_total=mean(umis_total),
              pct_ipa=weighted.mean(pct_ipa, umis_total),
              pct_proximal=weighted.mean(pct_proximal, umis_total),
              pct_distal=weighted.mean(pct_distal, umis_total), .groups='drop') %>%
    mutate(gene_set=case_when(
        target_gene == "non-targeting" ~ "non-targeting",
        target_gene %in% GENES_CPSF ~ "CPSF complex",
        target_gene %in% GENES_CF1 ~ "CFI complex",
        target_gene %in% GENES_CF2 ~ "CFII complex",
        target_gene %in% GENES_CSTF ~ "CSTF complex",
        target_gene %in% GENES_PAF ~ "PAF complex",
        target_gene %in% GENES_NEF ~ "mRNA export factors",
        target_gene %in% GENES_SPL ~ "splicing factors",
        target_gene %in% GENES_MTOR ~ "MTOR complex",
        TRUE ~ "other"
    ) %>% factor(levels=c("other", "non-targeting", "CPSF complex", 
                          "CFI complex", "CFII complex", "CSTF complex",
                          "PAF complex", "mRNA export factors",
                          "splicing factors", "MTOR complex"))) %>%
    mutate(is_known=!gene_set %in% c("non-targeting", "other"))

IPA Extremes

df_targets %>%
    select(target_gene, n_cells, pct_ipa, mean_umis_total, sgID_AB) %>%
    slice_max(pct_ipa, n=20)
## # A tibble: 20 × 5
##    target_gene n_cells pct_ipa mean_umis_total sgID_AB                          
##    <chr>         <int>   <dbl>           <dbl> <chr>                            
##  1 HSPA5            75   0.208           8014. HSPA5_+_128003614.23-P1P2|HSPA5_…
##  2 SRP68            55   0.208           6097. SRP68_+_74068540.23-P1P2|SRP68_-…
##  3 EIF3D            55   0.206          14107. EIF3D_+_36925166.23-P1P2|EIF3D_-…
##  4 SNRNP200        101   0.203           9093. SNRNP200_+_96971234.23-P1P2|SNRN…
##  5 ALG11            21   0.203           5103. ALG11_+_52586530.23-P1P2|ALG11_-…
##  6 PRPF6            62   0.201           8243. PRPF6_-_62612504.23-P1P2|PRPF6_+…
##  7 CHMP2A           10   0.201          12971. CHMP2A_-_59066282.23-P1P2|CHMP2A…
##  8 MFAP1            59   0.200           9079. MFAP1_+_44116853.23-P1P2|MFAP1_-…
##  9 PRPF8            89   0.200           9572. PRPF8_+_1588005.23-P1P2|PRPF8_+_…
## 10 PRPF31          156   0.199           9624. PRPF31_-_54619172.23-P1P2|PRPF31…
## 11 CDC5L            71   0.199          13840. CDC5L_-_44355475.23-P1P2|CDC5L_+…
## 12 SMU1             82   0.198          10946. SMU1_+_33076608.23-P1P2|SMU1_-_3…
## 13 SNIP1            46   0.198           7918. SNIP1_+_38019681.23-P1P2|SNIP1_+…
## 14 TFPT              8   0.198           6258. TFPT_+_54619005.23-P1P2|TFPT_+_5…
## 15 LSM6             47   0.198           9532. LSM6_-_147096941.23-P1P2|LSM6_-_…
## 16 DHDDS            60   0.198           6487. DHDDS_-_26758867.23-P1P2|DHDDS_-…
## 17 EIF3E            50   0.198          14643. EIF3E_+_109260706.23-P1P2|EIF3E_…
## 18 EIF2S1           83   0.197           5264. EIF2S1_-_67827085.23-P1P2|EIF2S1…
## 19 PRPF4            85   0.197          11623. PRPF4_-_116037989.23-P1P2|PRPF4_…
## 20 PRPF3           113   0.197          10797. PRPF3_-_150294051.23-P1P2|PRPF3_…
df_targets %>%
    select(target_gene, n_cells, pct_ipa, mean_umis_total, sgID_AB) %>%
    slice_min(pct_ipa, n=20)
## # A tibble: 20 × 5
##    target_gene n_cells pct_ipa mean_umis_total sgID_AB                          
##    <chr>         <int>   <dbl>           <dbl> <chr>                            
##  1 CPSF4            32   0.164           9121. CPSF4_-_99036611.23-P1P2|CPSF4_-…
##  2 RNMT             71   0.167           8433. RNMT_-_13726752.23-P1P2|RNMT_+_1…
##  3 FIP1L1           13   0.167           8796. FIP1L1_+_54243867.23-P1P2|FIP1L1…
##  4 RAMAC            61   0.167           9286. FAM103A1_-_83654987.23-P1P2|FAM1…
##  5 CPSF1            50   0.167           9195. CPSF1_+_145634685.23-P1P2|CPSF1_…
##  6 SERF2            33   0.167           9952. SERF2_+_44084560.23-P1|SERF2_+_4…
##  7 CNOT1            99   0.168          15223. CNOT1_+_58663696.23-P1P2|CNOT1_-…
##  8 CSTF3            67   0.169           7318. CSTF3_+_33183038.23-P1P2|CSTF3_-…
##  9 PTCD1            71   0.169           9058. PTCD1_-_99036387.23-P2|PTCD1_+_9…
## 10 NKX6-1           38   0.169           5556. NKX6-1_-_85419268.23-P1P2|NKX6-1…
## 11 LAMB1            14   0.170          12594. LAMB1_-_107643640.23-P1P2|LAMB1_…
## 12 CNOT2            67   0.170          13224. CNOT2_-_70637260.23-P1P2|CNOT2_+…
## 13 ZC3H18           66   0.170           8507. ZC3H18_+_88636860.23-P1P2|ZC3H18…
## 14 ELOB            134   0.170           8282. TCEB2_+_2827236.23-P1P2|TCEB2_+_…
## 15 CNOT3            59   0.171          17582. CNOT3_+_54641532.23-P1P2|CNOT3_-…
## 16 TPRKB           134   0.171           8855. TPRKB_+_73964387.23-P1P2|TPRKB_-…
## 17 ARRB2            13   0.171          12407. ARRB2_-_4614022.23-P1P2|ARRB2_-_…
## 18 XRN1             51   0.171          11324. XRN1_+_142166856.23-P1P2|XRN1_-_…
## 19 PCBP1           205   0.171          10528. PCBP1_+_70314830.23-P1P2|PCBP1_+…
## 20 YAE1             40   0.172           9186. YAE1D1_+_39606256.23-P1P2|YAE1D1…

Proximal Extemes

df_targets %>%
    select(target_gene, n_cells, pct_proximal, mean_umis_total, sgID_AB) %>%
    slice_max(pct_proximal, n=20)
## # A tibble: 20 × 5
##    target_gene n_cells pct_proximal mean_umis_total sgID_AB                     
##    <chr>         <int>        <dbl>           <dbl> <chr>                       
##  1 UPF1             46       0.0930          11877. UPF1_+_18942771.23-P1P2|UPF…
##  2 SMG5            468       0.0929          10472. SMG5_+_156252585.23-P1P2|SM…
##  3 OGFOD1           55       0.0924           9166. OGFOD1_-_56485723.23-P1P2|O…
##  4 NUDT21           17       0.0916           9848. NUDT21_+_56485197.23-P1P2|N…
##  5 CLOCK           542       0.0916          10382. CLOCK_-_56412950.23-P1P2|CL…
##  6 CPSF6            27       0.0914           8465. CPSF6_+_69633592.23-P1P2|CP…
##  7 INTS10           91       0.0903           9816. INTS10_+_19675000.23-P1P2|I…
##  8 XRN1             51       0.0897          11324. XRN1_+_142166856.23-P1P2|XR…
##  9 ARID5B          118       0.0895           9692. ARID5B_-_63660959.23-ENST00…
## 10 TADA2A          119       0.0892           8798. TADA2A_-_35767029.23-P1P2|T…
## 11 PET117          155       0.0891           9082. PET117_-_18118759.23-P1P2|P…
## 12 UPF2            113       0.0890          11715. UPF2_+_12084799.23-P1P2|UPF…
## 13 SMG1             48       0.0889          10309. SMG1_+_18937294.23-P1P2|SMG…
## 14 FBXO42          117       0.0886           8980. FBXO42_+_16678481.23-P1P2|F…
## 15 S100A1          112       0.0883           9202. S100A1_-_153603069.23-P2|S1…
## 16 PPRC1            55       0.0880           6205. PPRC1_-_103892809.23-P1P2|P…
## 17 GYG1            294       0.0879           9411. GYG1_+_148709356.23-P1P2|GY…
## 18 DHX36            72       0.0878           7691. DHX36_+_154042223.23-P1P2|D…
## 19 SMG7            143       0.0878          10090. SMG7_+_183441690.23-P1P2|SM…
## 20 CMTR1            82       0.0878           7524. CMTR1_-_37401025.23-P1P2|CM…
df_targets %>%
    select(target_gene, n_cells, pct_proximal, mean_umis_total, sgID_AB) %>%
    slice_min(pct_proximal, n=20)
## # A tibble: 20 × 5
##    target_gene n_cells pct_proximal mean_umis_total sgID_AB                     
##    <chr>         <int>        <dbl>           <dbl> <chr>                       
##  1 CEBPG            12       0.0671          10512. CEBPG_-_33864240.23-P1P2|CE…
##  2 ANLN              5       0.0674          17146. ANLN_-_36429483.23-P1P2|ANL…
##  3 PRPF6            62       0.0688           8243. PRPF6_-_62612504.23-P1P2|PR…
##  4 SNRNP200        101       0.0691           9093. SNRNP200_+_96971234.23-P1P2…
##  5 PRPF31          156       0.0695           9624. PRPF31_-_54619172.23-P1P2|P…
##  6 SMU1             82       0.0698          10946. SMU1_+_33076608.23-P1P2|SMU…
##  7 PRPF3           113       0.0703          10797. PRPF3_-_150294051.23-P1P2|P…
##  8 RBM42            49       0.0705           8731. RBM42_-_36120011.23-P1P2|RB…
##  9 PRPF40A          45       0.0707          11712. PRPF40A_+_153573726.23-P1P2…
## 10 EIF3D            55       0.0707          14107. EIF3D_+_36925166.23-P1P2|EI…
## 11 LSM5             73       0.0708          10218. LSM5_-_32529957.23-P1|LSM5_…
## 12 AP2A1            14       0.0709           9764. AP2A1_-_50270622.23-P1P2|AP…
## 13 EIF5             14       0.0710           6649. EIF5_-_103800558.23-P1|EIF5…
## 14 ZMAT2           183       0.0710          11950. ZMAT2_-_140080084.23-P1|ZMA…
## 15 INCENP            4       0.0710          13120. INCENP_+_61891519.23-P1P2|I…
## 16 EFTUD2          104       0.0711          10176. EFTUD2_+_42976772.23-P1P2|E…
## 17 LSM4             80       0.0712          10419. LSM4_+_18433820.23-P1P2|LSM…
## 18 MFAP1            59       0.0712           9079. MFAP1_+_44116853.23-P1P2|MF…
## 19 KIF23            11       0.0713          17233. KIF23_+_69706676.23-P1P2|KI…
## 20 PRPF8            89       0.0713           9572. PRPF8_+_1588005.23-P1P2|PRP…

Distal Extremes

df_targets %>%
    select(target_gene, n_cells, pct_distal, mean_umis_total, sgID_AB) %>%
    slice_max(pct_distal, n=20)
## # A tibble: 20 × 5
##    target_gene n_cells pct_distal mean_umis_total sgID_AB                       
##    <chr>         <int>      <dbl>           <dbl> <chr>                         
##  1 NKX6-1           38      0.445           5556. NKX6-1_-_85419268.23-P1P2|NKX…
##  2 FIP1L1           13      0.442           8796. FIP1L1_+_54243867.23-P1P2|FIP…
##  3 SERF2            33      0.442           9952. SERF2_+_44084560.23-P1|SERF2_…
##  4 CPSF4            32      0.441           9121. CPSF4_-_99036611.23-P1P2|CPSF…
##  5 TAF2             67      0.436           5979. TAF2_-_120844853.23-P1P2|TAF2…
##  6 TAF12            13      0.435           5564. TAF12_+_28969568.23-P1P2|TAF1…
##  7 CPSF1            50      0.434           9195. CPSF1_+_145634685.23-P1P2|CPS…
##  8 TAF10            27      0.434           8729. TAF10_-_6633436.23-P1P2|TAF10…
##  9 ANLN              5      0.433          17146. ANLN_-_36429483.23-P1P2|ANLN_…
## 10 CEBPG            12      0.433          10512. CEBPG_-_33864240.23-P1P2|CEBP…
## 11 TAF7             49      0.433           7705. TAF7_+_140700244.23-P1P2|TAF7…
## 12 MRPS34           70      0.433           7631. MRPS34_+_1823083.23-P1P2|MRPS…
## 13 FUNDC2           44      0.433           5875. FUNDC2_-_154255407.23-P1P2|FU…
## 14 TAF8             76      0.433           5751. TAF8_-_42018330.23-P1P2|TAF8_…
## 15 SRRT             84      0.433           8787. SRRT_+_100472814.23-P1P2|SRRT…
## 16 HINFP            10      0.432          15343. HINFP_-_118992315.23-P1P2|HIN…
## 17 MRPS14           32      0.432          11719. MRPS14_-_174992444.23-P1P2|MR…
## 18 PRPF40A          45      0.432          11712. PRPF40A_+_153573726.23-P1P2|P…
## 19 SUPT5H           11      0.431           5265. SUPT5H_-_39936298.23-P1P2|SUP…
## 20 TAF3             58      0.431           7015. TAF3_-_7860714.23-P1P2|TAF3_-…
df_targets %>%
    select(target_gene, n_cells, pct_distal, mean_umis_total, sgID_AB) %>%
    slice_min(pct_distal, n=20)
## # A tibble: 20 × 5
##    target_gene n_cells pct_distal mean_umis_total sgID_AB                       
##    <chr>         <int>      <dbl>           <dbl> <chr>                         
##  1 CPSF6            27      0.378           8465. CPSF6_+_69633592.23-P1P2|CPSF…
##  2 NUDT21           17      0.381           9848. NUDT21_+_56485197.23-P1P2|NUD…
##  3 OGFOD1           55      0.390           9166. OGFOD1_-_56485723.23-P1P2|OGF…
##  4 HSPA5            75      0.403           8014. HSPA5_+_128003614.23-P1P2|HSP…
##  5 NKAP             83      0.404          10176. NKAP_-_119077682.23-P1P2|NKAP…
##  6 COPG1             3      0.405          10665. COPG1_-_128968486.23-P1|COPG1…
##  7 EIF3D            55      0.405          14107. EIF3D_+_36925166.23-P1P2|EIF3…
##  8 CNOT1            99      0.405          15223. CNOT1_+_58663696.23-P1P2|CNOT…
##  9 EIF3E            50      0.405          14643. EIF3E_+_109260706.23-P1P2|EIF…
## 10 NUP93             2      0.405           9407. NUP93_-_56764101.23-P1P2|NUP9…
## 11 SLU7             78      0.406          10583. SLU7_+_159846048.23-P1P2|SLU7…
## 12 RBM33            98      0.406          10426. RBM33_-_155437595.23-P1P2|RBM…
## 13 GAPDH            96      0.406           9675. GAPDH_-_6643761.23-P1|GAPDH_-…
## 14 PSMB6            43      0.406           6931. PSMB6_-_4699495.23-P1|PSMB6_-…
## 15 CDC5L            71      0.407          13840. CDC5L_-_44355475.23-P1P2|CDC5…
## 16 EIF3A            62      0.407          10741. EIF3A_+_120840264.23-P1P2|EIF…
## 17 THOC3            70      0.408           9584. THOC3_-_175395258.23-P1P2|THO…
## 18 RACK1            13      0.408           6820. GNB2L1_+_180670882.23-P1P2|GN…
## 19 EIF3B           123      0.408          10157. EIF3B_-_2394542.23-P1P2|EIF3B…
## 20 POLR3D           31      0.408           7987. POLR3D_-_22102673.23-P1P2|POL…

Pair Plots

Proximal vs Distal

g <- df_targets %>%
    ggplot(aes(x=pct_proximal, y=pct_distal, color=gene_set, text=target_gene)) +
    geom_point(aes(size=n_cells), pch=16) +
    geom_rug(size=0.1) +
    scale_color_manual(values=COLOR_MAP) +
    scale_size_continuous(range=c(0.05, 3)) +
    scale_x_continuous(labels=scales::percent_format(accuracy=0.1)) +
    scale_y_continuous(labels=scales::percent_format(accuracy=0.1)) +
    theme_bw() +
    theme(legend.position="none") +
    labs(x="Percent UMIs from proximal isoforms",
         y="Percent UMIs from distal isoforms",
         color="Gene Set")
    
ggplotly(g, tooltip=c("text", "x", "y", "gene_set", "n_cells"))
df_targets %>%
    ggplot(aes(x=pct_proximal, y=pct_distal, color=gene_set, text=target_gene)) +
    geom_point(data=filter(df_targets, gene_set == 'other'), size=0.5) +
    geom_point(data=filter(df_targets, gene_set == 'non-targeting'), size=0.5) +
    geom_point(data=filter(df_targets, is_known), size=3) +
    geom_rug(size=0.1) +
    scale_color_manual(values=COLOR_MAP) +
    scale_size_continuous(range=c(0.05, 3)) +
    scale_x_continuous(labels=scales::percent_format(accuracy=0.1)) +
    scale_y_continuous(labels=scales::percent_format(accuracy=0.1)) +
    theme_bw() +
    labs(x="Percent UMIs from proximal isoforms",
         y="Percent UMIs from distal isoforms",
         color="Gene Set")

Similar to the first pass, we observed three extreme outliers that have isoform switching effects: CPSF6, NUDT21, and OGFOD1. In the same direction - shortening when knocked down - we see CNOT1 and PABPC1, but with milder effect sizes. In the opposite direction - lengthening when knocked-down - we see PCF11, SRSF7, FIP1L1, and NPAT.

Other factors appear to impact the isoforms almost independently. Namely, knockdown of TAF genes have a strong increase in distal isoforms. Similarly, core factors, such as, CPSF1-4, CSTF1, and CSTF3.

The PAF1 complex members form an outlier set that reduces proximial isoform usage with little impact on distal usage, such as, RTF1, PAF1, and CTF9.

IPA vs Proximal

g <- df_targets %>%
    ggplot(aes(x=pct_ipa, y=pct_proximal, color=gene_set, text=target_gene)) +
    geom_point(aes(size=n_cells), pch=16) +
    geom_rug(size=0.1) +
    scale_color_manual(values=COLOR_MAP) +
    scale_size_continuous(range=c(0.05, 3)) +
    scale_x_continuous(labels=scales::percent_format(accuracy=0.1)) +
    scale_y_continuous(labels=scales::percent_format(accuracy=0.1)) +
    theme_bw() +
    theme(legend.position="none") +
    labs(x="Percent UMIs from IPA isoforms",
         y="Percent UMIs from proximal isoforms",
         color="Gene Set")
    
ggplotly(g, tooltip=c("text", "x", "y", "gene_set", "n_cells"))
df_targets %>%
    ggplot(aes(x=pct_ipa, y=pct_proximal, color=gene_set, text=target_gene)) +
    geom_point(data=filter(df_targets, gene_set == 'other'), size=0.5) +
    geom_point(data=filter(df_targets, gene_set == 'non-targeting'), size=0.5) +
    geom_point(data=filter(df_targets, is_known), size=3) +
    geom_rug(size=0.1) +
    scale_color_manual(values=COLOR_MAP) +
    scale_size_continuous(range=c(0.05, 3)) +
    scale_x_continuous(labels=scales::percent_format(accuracy=0.1)) +
    scale_y_continuous(labels=scales::percent_format(accuracy=0.1)) +
    theme_bw() +
    labs(x="Percent UMIs from IPA isoforms",
         y="Percent UMIs from proximal isoforms",
         color="Gene Set")

Again, the isoform switchers from above are extreme outliers. Here we see that knockdown of PAF1 complex members reduces proximal usage in favor of increased IPA usage.

IPA vs Distal

g <- df_targets %>%
    ggplot(aes(x=pct_ipa, y=pct_distal, color=gene_set, text=target_gene)) +
    geom_point(aes(size=n_cells), pch=16) +
    geom_rug(size=0.1) +
    scale_color_manual(values=COLOR_MAP) +
    scale_size_continuous(range=c(0.05, 3)) +
    scale_x_continuous(labels=scales::percent_format(accuracy=0.1)) +
    scale_y_continuous(labels=scales::percent_format(accuracy=0.1)) +
    theme_bw() +
    theme(legend.position="none") +
    labs(x="Percent UMIs from IPA isoforms",
         y="Percent UMIs from distal isoforms",
         color="Gene Set")
    
ggplotly(g, tooltip=c("text", "x", "y", "gene_set", "n_cells"))
df_targets %>%
    ggplot(aes(x=pct_ipa, y=pct_distal, color=gene_set, text=target_gene)) +
    geom_point(data=filter(df_targets, gene_set == 'other'), size=0.5) +
    geom_point(data=filter(df_targets, gene_set == 'non-targeting'), size=0.5) +
    geom_point(data=filter(df_targets, is_known), size=3) +
    geom_rug(size=0.1) +
    scale_color_manual(values=COLOR_MAP) +
    scale_size_continuous(range=c(0.05, 3)) +
    scale_x_continuous(labels=scales::percent_format(accuracy=0.1)) +
    scale_y_continuous(labels=scales::percent_format(accuracy=0.1)) +
    theme_bw() +
    labs(x="Percent UMIs from IPA isoforms",
         y="Percent UMIs from distal isoforms",
         color="Gene Set")

Here we observe the factors whose knockdown increased distal usage independent of proximal usage do so at the cost of decreased IPA usage. These were the TAF members, CPSF1-4, and CSTF3. Notably, CPSF3 does not appear to impact IPA.

Conclusion

Considering on multi-UTR genes provides a cleaner signal for effects on different isoforms. We now see many of the known factors stand out, and can identify other possible genes with isoform-specific effects.


Runtime Details

Session Info

## R version 4.1.1 (2021-08-10)
## Platform: x86_64-apple-darwin13.4.0 (64-bit)
## Running under: macOS Big Sur 10.16
## 
## Matrix products: default
## BLAS/LAPACK: /Users/mfansler/miniconda3/envs/bioc_3_14/lib/libopenblasp-r0.3.18.dylib
## 
## locale:
## [1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8
## 
## attached base packages:
## [1] stats4    stats     graphics  grDevices utils     datasets  methods  
## [8] base     
## 
## other attached packages:
##  [1] SingleCellExperiment_1.16.0 SummarizedExperiment_1.24.0
##  [3] Biobase_2.54.0              GenomicRanges_1.46.0       
##  [5] GenomeInfoDb_1.30.0         IRanges_2.28.0             
##  [7] S4Vectors_0.32.0            BiocGenerics_0.40.0        
##  [9] MatrixGenerics_1.6.0        matrixStats_0.61.0         
## [11] Matrix_1.3-4                ggbeeswarm_0.6.0           
## [13] plotly_4.10.0               forcats_0.5.1              
## [15] stringr_1.4.0               dplyr_1.0.8                
## [17] purrr_0.3.4                 readr_2.1.1                
## [19] tidyr_1.1.4                 tibble_3.1.7               
## [21] ggplot2_3.3.5               tidyverse_1.3.1            
## [23] magrittr_2.0.3             
## 
## loaded via a namespace (and not attached):
##  [1] bitops_1.0-7           fs_1.5.2               lubridate_1.8.0       
##  [4] httr_1.4.2             tools_4.1.1            backports_1.4.0       
##  [7] bslib_0.3.1            utf8_1.2.2             R6_2.5.1              
## [10] vipor_0.4.5            DBI_1.1.1              lazyeval_0.2.2        
## [13] colorspace_2.0-2       withr_2.4.3            tidyselect_1.1.1      
## [16] compiler_4.1.1         cli_3.3.0              rvest_1.0.2           
## [19] xml2_1.3.3             DelayedArray_0.20.0    labeling_0.4.2        
## [22] sass_0.4.0             scales_1.1.1           digest_0.6.29         
## [25] rmarkdown_2.11         XVector_0.34.0         pkgconfig_2.0.3       
## [28] htmltools_0.5.2        highr_0.9              dbplyr_2.1.1          
## [31] fastmap_1.1.0          htmlwidgets_1.5.4      rlang_1.0.2           
## [34] readxl_1.3.1           rstudioapi_0.13        farver_2.1.0          
## [37] jquerylib_0.1.4        generics_0.1.1         jsonlite_1.7.2        
## [40] crosstalk_1.2.0        RCurl_1.98-1.5         GenomeInfoDbData_1.2.7
## [43] Rcpp_1.0.7             munsell_0.5.0          fansi_0.5.0           
## [46] lifecycle_1.0.1        stringi_1.7.6          yaml_2.2.1            
## [49] zlibbioc_1.40.0        grid_4.1.1             crayon_1.4.2          
## [52] lattice_0.20-45        haven_2.4.3            hms_1.1.1             
## [55] knitr_1.39             pillar_1.7.0           reprex_2.0.1          
## [58] glue_1.6.2             evaluate_0.15          data.table_1.14.2     
## [61] modelr_0.1.8           vctrs_0.4.1            tzdb_0.2.0            
## [64] cellranger_1.1.0       gtable_0.3.0           assertthat_0.2.1      
## [67] xfun_0.30              broom_0.8.0            viridisLite_0.4.0     
## [70] beeswarm_0.4.0         ellipsis_0.3.2

Conda Environment

## Conda Environment YAML
name: base
channels:
  - conda-forge
  - bioconda
  - defaults
dependencies:
  - anaconda-client=1.8.0=pyhd8ed1ab_0
  - anaconda-project=0.10.2=pyhd8ed1ab_0
  - attrs=21.2.0=pyhd8ed1ab_0
  - awscli=1.25.79=py39h6e9494a_0
  - backports=1.0=py_2
  - backports.functools_lru_cache=1.6.4=pyhd8ed1ab_0
  - backports.zoneinfo=0.2.1=py39h701faf5_5
  - bagit=1.8.1=pyhd8ed1ab_0
  - bagit-profile=1.3.1=pyhd8ed1ab_0
  - bdbag=1.6.1=pyhd8ed1ab_0
  - beautifulsoup4=4.9.3=pyhb0f4dca_0
  - blinker=1.4=py_1
  - boa=0.13.0=pyha770c72_0
  - boolean.py=3.7=py_0
  - boto3=1.24.78=pyhd8ed1ab_0
  - botocore=1.27.78=pyhd8ed1ab_0
  - brotlipy=0.7.0=py39h63b48b0_1004
  - bzip2=1.0.8=h0d85af4_4
  - c-ares=1.18.1=h0d85af4_0
  - ca-certificates=2022.9.24=h033912b_0
  - cachecontrol=0.12.11=pyhd8ed1ab_0
  - cairo=1.16.0=he43a7df_1008
  - cctools=973.0.1=hd9211c8_2
  - cctools_osx-64=973.0.1=h3e07e27_2
  - certifi=2022.9.24=pyhd8ed1ab_0
  - cffi=1.15.1=py39hae9ecf2_0
  - chardet=5.0.0=py39h6e9494a_0
  - charset-normalizer=2.0.0=pyhd8ed1ab_0
  - click=8.1.3=py39h6e9494a_0
  - clyent=1.2.2=py_1
  - colorama=0.4.3=py_0
  - commonmark=0.9.1=py_0
  - conda=4.14.0=py39h6e9494a_0
  - conda-build=3.21.9=py39h6e9494a_1
  - conda-forge-pinning=2021.10.10.22.03.30=hd8ed1ab_0
  - conda-libmamba-solver=22.6.0=pyhd8ed1ab_0
  - conda-pack=0.6.0=pyhd3deb0d_0
  - conda-package-handling=1.9.0=py39ha30fb19_0
  - conda-smithy=3.17.2=pyhd8ed1ab_0
  - conda-standalone=4.10.3=h694c41f_0
  - conda-suggest=0.1.1=pyh9f0ad1d_0
  - conda-suggest-conda-forge=2021.8.24=h694c41f_0
  - conda-verify=3.1.1=py39h6e9494a_1004
  - constructor=3.3.1=py39h6e9494a_0
  - cryptography=38.0.3=py39h7eb6a14_0
  - curl=7.86.0=h57eb407_1
  - dataclasses=0.8=pyhc8e2a94_3
  - dbus=1.13.6=ha13b53f_2
  - deprecated=1.2.12=pyh44b312d_0
  - docutils=0.16=py39h6e9494a_3
  - expat=2.4.1=he49afe7_0
  - ffq=0.2.1=pyhdfd78af_0
  - filelock=3.0.12=pyh9f0ad1d_0
  - fmt=9.1.0=hb8565cd_0
  - font-ttf-dejavu-sans-mono=2.37=hab24e00_0
  - font-ttf-inconsolata=3.000=h77eed37_0
  - font-ttf-source-code-pro=2.038=h77eed37_0
  - font-ttf-ubuntu=0.83=hab24e00_0
  - fontconfig=2.13.1=h10f422b_1005
  - fonts-conda-ecosystem=1=0
  - fonts-conda-forge=1=0
  - freetype=2.10.4=h4cff582_1
  - fribidi=1.0.10=hbcb3906_0
  - frozendict=2.3.4=py39h701faf5_0
  - future=0.18.2=py39h6e9494a_5
  - gawk=5.1.0=h8a989fb_0
  - gdk-pixbuf=2.42.6=h2e6141f_0
  - gettext=0.21.1=h8a4c099_0
  - giflib=5.2.1=hbcb3906_2
  - git=2.34.1=pl5321h9a53687_0
  - git-lfs=2.13.3=h694c41f_0
  - gitdb=4.0.7=pyhd8ed1ab_0
  - gitpython=3.1.18=pyhd8ed1ab_0
  - glib=2.70.2=hcf210ce_0
  - glib-tools=2.70.2=hcf210ce_0
  - glob2=0.7=py_0
  - globus-sdk=2.0.1=pyhd8ed1ab_0
  - gmp=6.2.1=h2e338ed_0
  - gnutls=3.6.13=h756fd2b_1
  - graphite2=1.3.13=h2e338ed_1001
  - harfbuzz=2.9.0=h159f659_0
  - htop=3.2.1=h398481e_0
  - htslib=1.15=hc057d7f_0
  - hub=2.14.2=hc7d050b_0
  - icu=68.1=h74dc148_0
  - idna=3.1=pyhd3deb0d_0
  - importlib-metadata=4.11.4=py39h6e9494a_0
  - importlib_metadata=4.11.4=hd8ed1ab_0
  - importlib_resources=5.4.0=pyhd8ed1ab_0
  - inotify_simple=1.3.5=pyha770c72_3
  - ipython_genutils=0.2.0=py_1
  - isodate=0.6.0=py_1
  - jbig=2.1=h0d85af4_2003
  - jinja2=3.0.1=pyhd8ed1ab_0
  - jmespath=0.10.0=pyh9f0ad1d_0
  - joblib=1.0.1=pyhd8ed1ab_0
  - jpeg=9d=hbcb3906_0
  - json5=0.9.5=pyh9f0ad1d_0
  - jsonschema=4.3.1=pyhd8ed1ab_0
  - jupyter_core=4.11.1=py39h6e9494a_0
  - krb5=1.19.3=hb49756b_0
  - ld64=609=hd2e7500_2
  - ld64_osx-64=609=h2487922_2
  - ldid=2.1.2=h6a69015_3
  - lerc=2.2.1=h046ec9c_0
  - libarchive=3.5.2=h2b60450_1
  - libcurl=7.86.0=h57eb407_1
  - libcxx=14.0.6=hccf4f1f_0
  - libdeflate=1.10=h0d85af4_0
  - libedit=3.1.20191231=h0678c8f_2
  - libev=4.33=haf1e3a3_1
  - libffi=3.4.2=h0d85af4_5
  - libglib=2.70.2=hf1fb8c0_0
  - libiconv=1.17=hac89ed1_0
  - libidn2=2.3.2=h0d85af4_0
  - liblief=0.11.5=he49afe7_0
  - libllvm12=12.0.1=hd011deb_2
  - libmamba=1.0.0=h2bf831e_2
  - libmambapy=1.0.0=py39he069e75_2
  - libnghttp2=1.47.0=h7cbc4dc_1
  - libpng=1.6.37=h7cec526_2
  - librsvg=2.50.7=hd2a7919_0
  - libsolv=0.7.22=hd9580d2_0
  - libssh2=1.10.0=h7535e13_3
  - libtiff=4.3.0=h1167814_0
  - libunistring=0.9.10=h0d85af4_0
  - libwebp-base=1.2.1=h0d85af4_0
  - libxml2=2.9.12=h93ec3fd_0
  - libxslt=1.1.33=h5739fc3_2
  - libzlib=1.2.13=hfd90126_4
  - license-expression=1.2=py_0
  - lockfile=0.12.2=py_1
  - lxml=4.8.0=py39h63b48b0_2
  - lz4-c=1.9.3=he49afe7_1
  - lzo=2.10=haf1e3a3_1000
  - mamba=1.0.0=py39ha435c47_2
  - markupsafe=2.1.1=py39h63b48b0_1
  - msgpack-python=1.0.4=py39h92daf61_1
  - msrest=0.6.21=pyh44b312d_0
  - nbformat=5.1.3=pyhd8ed1ab_0
  - ncurses=6.3=h96cf925_1
  - nettle=3.6=hedd7734_0
  - oauthlib=3.1.1=pyhd8ed1ab_0
  - openssl=1.1.1s=hfd90126_0
  - pango=1.48.9=ha05cd14_0
  - patch=2.7.6=hbcf498f_1002
  - pcre=8.45=he49afe7_0
  - pcre2=10.37=ha16e1b2_0
  - perl=5.32.1=0_h0d85af4_perl5
  - pigz=2.6=h5dbffcc_0
  - pip=21.2.4=pyhd8ed1ab_0
  - pixman=0.40.0=hbcb3906_0
  - pkginfo=1.7.1=pyhd8ed1ab_0
  - popt=1.16=h7b079dc_2002
  - prompt-toolkit=3.0.20=pyha770c72_0
  - prompt_toolkit=3.0.20=hd8ed1ab_0
  - psutil=5.9.2=py39ha30fb19_0
  - py-lief=0.11.5=py39h9fcab8e_0
  - pyasn1=0.4.8=py_0
  - pybind11-abi=4=hd8ed1ab_3
  - pycosat=0.6.3=py39h63b48b0_1010
  - pycparser=2.20=pyh9f0ad1d_2
  - pycrypto=2.6.1=py39h89e85a6_1006
  - pygithub=1.53=py_0
  - pygments=2.10.0=pyhd8ed1ab_0
  - pyjwt=1.7.1=py_0
  - pyrsistent=0.18.1=py39h63b48b0_1
  - pysocks=1.7.1=pyha2e5f31_6
  - python=3.9.13=h57e37ff_0_cpython
  - python-dateutil=2.8.2=pyhd8ed1ab_0
  - python-libarchive-c=4.0=py39h6e9494a_1
  - python-tzdata=2021.5=pyhd8ed1ab_0
  - python_abi=3.9=2_cp39
  - pytz=2021.1=pyhd8ed1ab_0
  - pytz-deprecation-shim=0.1.0.post0=py39h6e9494a_2
  - pyyaml=5.4.1=py39h701faf5_3
  - readline=8.1.2=h3899abd_0
  - reproc=14.2.3=h0d85af4_0
  - reproc-cpp=14.2.3=he49afe7_0
  - requests=2.28.1=pyhd8ed1ab_1
  - requests-oauthlib=1.3.0=pyh9f0ad1d_0
  - rich=10.16.1=pyhd8ed1ab_0
  - ripgrep=13.0.0=h244e342_0
  - rsa=4.7.2=pyh44b312d_0
  - rsync=3.2.7=ha1fed10_0
  - ruamel.yaml=0.17.21=py39h63b48b0_1
  - ruamel.yaml.clib=0.2.6=py39h63b48b0_1
  - ruamel_yaml=0.15.80=py39h701faf5_1007
  - s3transfer=0.6.0=pyhd8ed1ab_0
  - scrypt=0.8.18=py39hbfd427f_4
  - setuptools=65.3.0=pyhd8ed1ab_1
  - six=1.16.0=pyh6c4a22f_0
  - smartmontools=7.2=h940c156_0
  - smmap=3.0.5=pyh44b312d_0
  - soupsieve=2.3.1=pyhd8ed1ab_0
  - sqlite=3.38.5=hd9f0692_0
  - tapi=1100.0.11=h9ce4665_0
  - tk=8.6.12=h5dbffcc_0
  - toolz=0.11.1=py_0
  - tornado=6.2=py39h701faf5_0
  - tqdm=4.62.2=pyhd8ed1ab_0
  - traitlets=5.1.0=pyhd8ed1ab_0
  - typing_extensions=3.10.0.0=pyha770c72_0
  - tzdata=2021e=he74cb21_0
  - tzlocal=4.2=py39h6e9494a_1
  - urllib3=1.26.6=pyhd8ed1ab_0
  - vsts-python-api=0.1.22=py_0
  - watchgod=0.7=pyhd8ed1ab_0
  - wcwidth=0.2.5=pyh9f0ad1d_2
  - wget=1.20.3=h52ee1ee_1
  - wheel=0.37.0=pyhd8ed1ab_1
  - wrapt=1.14.1=py39h701faf5_0
  - xxhash=0.8.0=h35c211d_3
  - xz=5.2.5=haf1e3a3_1
  - yaml=0.2.5=haf1e3a3_0
  - yaml-cpp=0.7.0=hb486fe8_1
  - zipp=3.5.0=pyhd8ed1ab_0
  - zlib=1.2.13=hfd90126_4
  - zstd=1.5.2=hfa58983_4
  - pip:
    - pyopenssl==20.0.1
prefix: /Users/mfansler/miniconda3